Google ColaboratoryでSeleniumを使うための設定方法
データアナリティクス事業本部のueharaです。
今回はGoogle ColaboratoryでPythonからSeleniumを使うための設定方法を紹介したいと思います。
はじめに
2023年5月時点では、Google Colaboratory上で単純に!apt install chromium-chromedriver
でchromedriverをインストールした後、Seleniumを実行しようとしても以下のようなエラーが発生し強制終了してしまいます。
WebDriverException: Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 1
これは、今年の1/18にColabのデフォルトのランタイムが(数年ぶりに)Ubuntu 18.04 LTSからUbuntu 20.04 LTSに変更になり(参考)、chromium-browserがsnapパッケージの外では配布されなくなったことが原因のようです。
対処法を少し調べてみると、Debian Buster等のリポジトリを追加し、優先度を変更して追加したリポジトリから優先的にchrome*
のパッケージを入手するコマンドのコピペが種々のページで紹介されていました。
それでも解決できるのですが、その中にはapt-key adv --keyserver ~~~ --recv-keys ~~~
で鍵を追加したりといったあまり良しとされていない処理も含まれていたり、実行しないといけないコマンドも多いので、今回は別の方法を紹介したいと思います。
※どうしてもリポジトリを追加する方法でやりたい!という方は、以下を参考に鍵を追加すると良いと思います。
Google ColaboratoryでSeleniumを使うための設定
結論ですが、Colab上で以下を実行することでStable(安定版)のchromeとchromedriverのインストールを行うことができます。
%%shell # 更新を実行 sudo apt -y update # ダウンロードのために必要なパッケージをインストール sudo apt install -y wget curl unzip # 以下はChromeの依存パッケージ wget http://archive.ubuntu.com/ubuntu/pool/main/libu/libu2f-host/libu2f-udev_1.1.4-1_all.deb dpkg -i libu2f-udev_1.1.4-1_all.deb # Chromeのインストール wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb dpkg -i google-chrome-stable_current_amd64.deb # Chrome Driverのインストール CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` wget -N https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P /tmp/ unzip -o /tmp/chromedriver_linux64.zip -d /tmp/ chmod +x /tmp/chromedriver mv /tmp/chromedriver /usr/local/bin/chromedriver
実行が完了したら、それぞれのバージョンを念のため確認します。
!google-chrome --version !chromedriver --version
2023年5月時点ですが、それぞれのバージョンは以下のようになっておりました。
chromeとchromedriverの準備ができたので、次はSeleniumパッケージをインストールします。
特に難しい作業はなく、以下でインストール可能です。
!pip install selenium
Seleniumの起動テスト
以下のスクリプトを実行し、DevelopersIOのタイトルが取得できるか確認します。
from selenium import webdriver URL = "https://dev.classmethod.jp/" options = webdriver.ChromeOptions() options.add_argument("--headless") options.add_argument('--disable-dev-shm-usage') options.add_argument("--no-sandbox") driver = webdriver.Chrome( options=options ) driver.get(URL) title = driver.title driver.close() print(title)
以下のように表示できていれば成功です。
最後に
今回はGoogle ColaboratoryでPythonからSeleniumを使うための設定方法を紹介しました。
本記事がどなたかの参考になりましたら幸いです。